package com.mustafaiev.tair.cts.facade;

import java.util.List;

import com.mustafaiev.tair.cts.dto.GroupDTO;
import com.mustafaiev.tair.cts.exeption.DataNotRemovedException;
import com.mustafaiev.tair.cts.exeption.DataNotRetrievedException;
import com.mustafaiev.tair.cts.exeption.DataNotStoredException;

public interface IGroupFacade extends ICostTrackingSystemFacade {

	/**
	 * Saves group into database
	 * 
	 * @param group
	 * @throws DataNotStoredException
	 */
	void saveGroup(GroupDTO group) throws DataNotStoredException;

	/**
	 * Updates group in database
	 * 
	 * @param group
	 * @throws DataNotStoredException
	 */
	void updateGroup(GroupDTO group) throws DataNotStoredException;

	/**
	 * Retrieves groups
	 * 
	 * @return
	 * @throws DataNotRetrievedException
	 */
	List<GroupDTO> retrieveGroups() throws DataNotRetrievedException;

	/**
	 * Retrieves group by ID
	 * 
	 * @param groupId
	 * @return
	 * @throws DataNotRetrievedException
	 */
	GroupDTO retrieveGroup(Long groupId) throws DataNotRetrievedException;

	/**
	 * Deletes groups
	 * 
	 * @param groupsToDelete
	 * @throws DataNotRemovedException
	 */
	void deleteGroups(List<GroupDTO> groupsToDelete)
			throws DataNotRemovedException;

}
